package daos;

import java.util.List;
import datos.Oferta;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.Query;

/**
 * @version 1.0
 * @author Andres Mejia -Fabio Giraldo
 * 
 * Session Bean implementation class OfertaDAO
 * 
 * @param Oferta hace referencia a la entidad que va hacer manejada por el DAO.
 * @param Integer especifica cual es el tipo de dato de la llave primaria de la entidad. 
 * 
 */
@Stateless
@LocalBean
public class OfertaDAO extends DAO<Oferta, Integer> {

    /**
     * Default constructor. 
     */
    public OfertaDAO() {
        // TODO Auto-generated constructor stub
    }

	@Override
	protected Class<Oferta> getEntityClass() {
		return Oferta.class;
	}
	
	/**
	 * @param pagina Hace referencia al numero de pagina que esta solicitando.
	 * @return query.getResultList() Retorna la lista de las ofertas correspondientes a la pagina solicitada.
	 */
	public List<Oferta> ofertaValor(int pagina )
	{
		
		Query query = entityManager
		.createQuery("select * from Oferta");
		
		
		query = query.setMaxResults(10);
		query = query.setFirstResult((pagina-1)*10);
		
		return query.getResultList();
	}
	
	public String ofertasSubasta(int id, double valor)
	{
		Query query = entityManager.createQuery("select COUNT(oferta) from Oferta oferta where oferta.subasta.identificacion=:parametro and oferta.valorOfertado>=:parametro1" );
		query.setParameter("parametro", id);
		query.setParameter("parametro1", valor);
		return  ""+query.getSingleResult() ;
	}
	
	public List<Oferta>OfertasMayorPromedio(int id)
	{
		Query query = entityManager.createQuery
		("select oferta from Oferta oferta WHERE oferta.subasta.identificacion=:parametro and oferta.valorOfertado >= (SELECT AVG(ofer.valorOfertado) FROM Oferta ofer)" );
		query.setParameter("parametro", id);
		return query.getResultList();
	}
	


}
